██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
IronPython
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbaIronPython è un'implementazione del linguaggio di programmazione mwbqPython funziona sulle implementazioni del mwbg.NET Framework. Jim Hugunin ha creato il progetto ed ha contribuito attivamente ad esso fino alla versione 1.0 che è stata distribuita il 5 settembre mwca2006. Successivamente il progetto è stato sostenuto da un piccolo team di mwcqMicrosoft che ha prodotto nel dicembre 2008 la versione 2.0 e lo ha portato avanti fino al rilascio della versione 2.7 Beta 1 nel novembre del 2010. Attualmente è gestito da un gruppo di volontari nel repository open-source CodePlex di Microsoft.
IronPython è scritto interamente in mwcwC#, soltanto una piccola parte del suo codice è generato automaticamente dal linguaggio mwdaPython. Importante dire che IronPython è sostenuto dal DLR ovvero il Dynamic Language Runtime, ed ha una biblioteca che gira in mwdgCommon Language Infrastructure che fornisce la tipizzazione dinamica e la spedizione del metodo dinamico. La DLR è parte del mwdwFramework .NET ed è anche una parte del mweamweqbuild branch di Mono. Il DLR può anche essere utilizzato come una libreria di implementazioni. L'idea alla base dei linguaggi Iron* era di avere un ambiente di scripting per creare applicazioni personalizzabili via script, o per creare dei mwegDSL interni.
Contents
• Versioni
• Licenze
• Esempi
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Versioni
La versione 2.0, distribuita a dicembre mwfg2008, e aggiornata 2.0.3 il 23 ottobre 2009, si rivolge CPython 2,5. IronPython 2.0.3 è compatibile fino al mwgaFramework.NET 3.0.
La versione 2.6, distribuita l'11 dicembre 2009 e aggiornato il 12 aprile 2010, si rivolge soltanto al CPython 2.6. Mentre la versione di IronPython 2.6.1 è compatibile a livello binario solo con Framework.NET 4.0. Però IronPython 2.6.1 deve essere compilato dai sorgenti per funzionare su mwgwFramework.NET 3.0. Iron Python 2.6.2, distribuita a metà ottobre 2010, anch'essa è compatibile a livello binario ma con entrambi mwhaFramework.NET 3.0 e Framework.NET 4.0.
La 2.7 è stata distribuita a metà marzo 2011 e si rivolge CPython 2.7., anche la 2.7.1 è stata distribuita il 21 ottobre 2011 e si rivolge anch'essa a CPython 2.7..
Quest'ultima versione 2.7.2.1 è stata distribuita il 13 marzo 2012, ed ha il supporto per le librerie in formato zip e gli eseguibili compilati.
Silverlight
IronPython, supportato in mwigSilverlight, può essere utilizzato come un motore di scripting nel browser proprio come mwiwJavaScript. Gli script IronPython, vengono passati come un semplice mwjascript in JavaScript, ecco come: <script> -tag. In più è anche possibile modificarne il markup mwjqXAML.
Questa tecnologia è chiamata mwjwGestalt.
//DLR initiation script.
<script src="http://gestalt.ironpython.net/dlr-latest.js" type="text/javascript"></script>
//Client-side script passed to IronPython and Silverlight.
<script type="text/python">
window.Alert("Hello from Python")
</script>
Lo stesso vale per mwsgIronRuby
Licenze
Fino alla versione 0.6 IronPython è stato distribuito sotto la mwtqLicenza Creative Commons, in seguito nel mese di agosto del mwtg2004, IronPython è stato assorbito da mwtwMicrosoft quindi è cambiata licenza. Con la versione 2.0 alpha la licenza è stata ancora una volta cambiata. Le ultime versioni sono state distribuite sotto licenza Apache 2.0.
Esempi
Il seguente script IronPython manipola gli oggetti .NET Framework. Questo script può essere fornito da uno sviluppatore di applicazioni mwuwlato client di terze parti e passato al framework mwvalato server tramite un'interfaccia. Si noti che né l'interfaccia né il codice lato server vengono modificati per supportare l'analisi richiesta dall'applicazione client.
from BookService import BookDictionary
booksWrittenByBookerPrizeWinners = [book.Title for book in BookDictionary.GetAllBooks()
if "Booker Prize" in book.Author.MajorAwards]
In questo caso, supponiamo che mwdq.NET Framework implementi una classe, BookDictionary, in un modulo chiamato BookService e pubblichi un'interfaccia in cui è possibile inviare ed eseguire gli script IronPython.cite-ref-1[1]
Questo script, quando inviato a quell'interfaccia, scorrerà l'intero elenco di libri gestiti dal framework e selezionerà quelli scritti dagli autori vincitori del Booker Prize.
La cosa interessante è che la responsabilità di scrivere l'analisi effettiva risiede nello sviluppatore lato client. Le richieste per lo sviluppatore lato server sono minime, essenzialmente fornendo solo l'accesso ai dati mantenuti dal server. Questo modello di progettazione semplifica notevolmente la distribuzione e la manutenzione di framework applicativi complessi.cite-ref-dot-net-example-2-0[2]
Lo script seguente usa .NET Framework per creare un semplice messaggio Hello World.
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import MessageBox
MessageBox.Show("Hello World")
Note
cite-note-dot-net-example-22. ↑ mwrq(mwrgmwrwEN) mwsamwsqUsing .NET objects from IronPython in Resolver One, su mwsgresolversystems.com. mwswURL consultato il 18 novembre 2008 mwta(archiviato dall'mwtqurl originale il 14 gennaio 2009).
Bibliografia
• mwuq(EN) Jim Hugunin's blog IronPython, su blogs.msdn.com.
• mwuw(EN) Microsoft cuts loose IronPython, su theregister.co.uk.
• mwvq(EN) mwvghttp://ironpython.codeplex.com mwvwArchiviato il 4 marzo 2016 in Internet Archive. Differenze tra versioni.
• mwwg(EN) mwwwhttp://ironpython.codeplex.com mwxaArchiviato il 5 maggio 2016 in Internet Archive. Performance Report
Altri progetti
Altri progetti
• Wikimedia Commons
• Wikimedia Commons contiene immagini o altri file su IronPython
Collegamenti esterni
• (EN) Sito ufficiale, su ironpython.net.
• Repository sorgenti di IronPython, su github.com.